import router from '@/router/index'
import { getToken } from '@/composables/auth'
import { notification, showMessage } from '@/composables/util'
import store from '@/store'
import { showPageLoading, hidePageLoading } from '@/composables/util'
import { loginrole } from '@/api/admin/user'


// 全局前置守卫
router.beforeEach(async (to, from, next) => {
    // console.log('全局前置守卫 >>>>')
    showPageLoading()
    const token = getToken()
    // 如果用户已登录，则自动获取用户信息，并使用全局状态管理
    if (token) {
        console.log('获取登录用户信息。。。。')
        await store.dispatch('getAdminInfo')
    }

    // 前台请求逻辑处理
    if (!to.path.startsWith('/admin')) {
        await store.dispatch('getBlogSetting')
        next()
        return
    }


    // 后台请求逻辑处理
    // 未登录，强制跳转登录页
    if (!token && to.path.startsWith('/admin')) {
        showMessage('请先登录', 'warning')
        next({ path: '/login'})
        return
    }

    // 已登录且访问后台页面，检查用户权限
    if (token && to.path.startsWith('/admin')) {
        console.log("你想进入后台")
        try {
            const result = await loginrole()
            // 假设后端返回true表示有权限，false表示无权限
            if (!result || !result.success) {
                showMessage('您没有权限访问后台', 'error')
                next({ path: '/' })
                return
            }
        } catch (error) {
            console.error('权限检查失败:', error)
            showMessage('权限验证失败', 'error')
            next({ path: '/' })
            return
        }
    }

    next()
})

router.afterEach((to, from) => {
    // 设置页面标题
    let title = (to.meta.title ? to.meta.title : '') + ' -Airs'
    document.title = title

    hidePageLoading()
})
